package com.yjzx.util.common.util.BeanUtils;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * @author yjzx
 * @date 2023/12/25
 * @description 泛型获取抽象类
 *
 */
public abstract class BaseClass<T> implements BaseInterface<T> {
    /**
     * 获取当前抽象类的泛型
     * @return 实现类的泛型class对象
     */
    @Override
    public Class<T> getGenericityClass() {
        Type type = this.getClass().getGenericSuperclass();
        if (!(type instanceof ParameterizedType)) {
            throw new RuntimeException("无法获取当前类信息");
        }
        return (Class<T>) BaseInterface.getGenericClass((ParameterizedType)type);
    }
}
